在自動化部署流程中,AWS CodeBuild 扮演著實際執行者的角色。如果說 CodePipeline 是指揮官,那麼 CodeBuild 就是真正動手將藍圖變成成品的工作坊。它是一個完全託管的建構服務,能編譯原始程式碼、執行單元測試,並生成隨時可供部署的軟體成品。
使用 CodeBuild 的核心優勢在於它是一個**無伺服器(Serverless)**的服務。這意味著:
在 CodePipeline 協調的 CI/CD 工作流程中,CodeBuild 通常位於 **Source Stage(來源階段)**之後。
buildspec.yml
CodeBuild 知道如何工作的關鍵在於 buildspec.yml
這個檔案。這個 YAML 格式的建構規格檔案必須存放在程式碼的根目錄中,它詳細定義了 CodeBuild 執行的所有步驟,涵蓋了整個建構生命週期:
階段 (Phase) | 主要任務 |
---|---|
install |
安裝建構所需的依賴項(例如 npm、pip、Maven 等)。 |
pre_build |
在正式建構前執行任何指令(例如登入 Docker Hub、執行程式碼 Linting)。 |
build |
執行核心建構指令(例如編譯、打包程式碼)。 |
post_build |
完成建構後的清理或發布任務(例如執行單元測試、推播 Docker 映像到 ECR)。 |
artifacts |
指定哪些檔案應該被打包成最終的成品,供後續的 CodePipeline 部署階段使用。 |
匯出到試算表
在實作中,CodeBuild 配合 GitHub 提供了強大的 CI/CD 能力:
main
),CodePipeline 會立即觸發,並將任務交給 CodeBuild。buildspec.yml
中強制執行所有單元測試。只有當所有測試通過,CodeBuild 才會生成成品。任何測試失敗都會在 CodeBuild 階段被攔截,Pipeline 會停止,防止有問題的程式碼進入部署環境。透過 CodeBuild,我們有效地將程式碼的建構、測試和成品準備這三個關鍵步驟實現了高效、可重複和自動化的流程。